home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 701-725 / 708 / intuisup / intuisup42.lha / Intuisup / source.lha / Language / language_test.c < prev    next >
C/C++ Source or Header  |  1992-04-30  |  14KB  |  446 lines

  1. /* $Revision Header *** Header built automatically - do not edit! ***********
  2.  *
  3.  *    (C) Copyright 1991 by Torsten Jürgeleit
  4.  *
  5.  *    Name .....: language_test.c
  6.  *    Created ..: Thursday 19-Dec-91 20:21:13
  7.  *    Revision .: 0
  8.  *
  9.  *    Date        Author                 Comment
  10.  *    =========   ====================   ====================
  11.  *    19-Dec-91   Torsten Jürgeleit      Created this file!
  12.  *
  13.  ****************************************************************************
  14.  *
  15.  *    Test of language support functions
  16.  *
  17.  * $Revision Header ********************************************************/
  18.  
  19.     /* Includes */
  20.  
  21. #include <exec/types.h>
  22. #include <graphics/gfxbase.h>
  23. #include <intuition/intuitionbase.h>
  24. #include <intuition/intuition.h>
  25. #ifdef AZTEC_C
  26. #include <functions.h>   /* needed for Aztec C - prototypes and pragmas for all Amiga system functions */
  27. #endif
  28. #include <libraries/memwatch.h>   /* header file for memory debug link library (Fish 240) - AFTER functions.h */
  29. #include "/render/render.h"
  30. #include "/texts/texts.h"
  31. #include "/borders/borders.h"
  32. #include "/gadgets/gadgets.h"
  33. #include "/requester/requester.h"
  34. #include "language.h"
  35.  
  36.     /* Defines */
  37.  
  38. #define WINDOW_WIDTH        600
  39. #define WINDOW_HEIGHT        180
  40. #define WINDOW_IDCMP        (CLOSEWINDOW | GADGET_IDCMP_FLAGS_ALL)
  41. #define WINDOW_FLAGS        (WINDOWCLOSE | WINDOWDRAG | WINDOWDEPTH | SMART_REFRESH | NOCAREREFRESH | RMBTRAP | ACTIVATE)
  42. #define WINDOW_TITLE        (UBYTE *)" Language test "
  43.  
  44. #define RENDER_INFO_FLAGS    (USHORT)(RENDER_INFO_FLAG_INNER_WINDOW | RENDER_INFO_FLAG_BACK_FILL)
  45. #define OPEN_WINDOW_FLAGS    (USHORT)(OPEN_WINDOW_FLAG_CENTER_WINDOW | OPEN_WINDOW_FLAG_RENDER_PENS)
  46.  
  47.     /* Defines for language texts */
  48.  
  49. #define LANGUAGE_ENGLISH    0
  50. #define LANGUAGE_GERMAN        1
  51.  
  52. #define LANGUAGE_TEXT_FILE    "deutsch.language"
  53. #define LANGUAGE_TEXT_ENTRIES    14
  54.  
  55. #define LANGUAGE_TEXT_AUTO_REQUEST    (BYTE *)1
  56. #define LANGUAGE_TEXT_REQUESTER        (BYTE *)2
  57. #define LANGUAGE_TEXT_LANGUAGE        (BYTE *)3
  58. #define LANGUAGE_TEXT_ENGLISH        (BYTE *)4
  59. #define LANGUAGE_TEXT_GERMAN        (BYTE *)5
  60. #define LANGUAGE_TEXT_AUTO_REQ_TITLE    (BYTE *)6
  61. #define LANGUAGE_TEXT_AUTO_REQ_BODY    (BYTE *)7
  62. #define LANGUAGE_TEXT_AUTO_REQ_POS    (BYTE *)8
  63. #define LANGUAGE_TEXT_AUTO_REQ_NEG    (BYTE *)9
  64. #define LANGUAGE_TEXT_REQ_TITLE        (BYTE *)10
  65. #define LANGUAGE_TEXT_REQ_LINE1        (BYTE *)11
  66. #define LANGUAGE_TEXT_REQ_LINE2        (BYTE *)12
  67. #define LANGUAGE_TEXT_REQ_LINE3        (BYTE *)13
  68. #define LANGUAGE_TEXT_REQ_GAD_CONTINUE    (BYTE *)14
  69.  
  70.     /* Globals */
  71.  
  72. struct IntuitionBase  *IntuitionBase;
  73. struct GfxBase        *GfxBase;
  74. struct Library        *DiskfontBase;
  75. struct Library        *LayersBase;
  76.  
  77.     /* Statics */
  78.  
  79. STATIC struct NewWindow  test_new_window = {
  80.    0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0, WINDOW_IDCMP, WINDOW_FLAGS,
  81.    NULL, NULL, WINDOW_TITLE, NULL, NULL, 0, 0, 0, 0, WBENCHSCREEN
  82. };
  83. STATIC struct TextAttr  topaz60_attr = { (STRPTR)"topaz.font", TOPAZ_SIXTY,
  84.                            FS_NORMAL, FPF_ROMFONT },
  85.             topaz80_attr = { (STRPTR)"topaz.font", TOPAZ_EIGHTY,
  86.                            FS_NORMAL, FPF_ROMFONT };
  87.     /* Defines for test gadgets */
  88.  
  89. #define TEST1_GADGET_AUTO_REQUEST    0
  90. #define TEST1_GADGET_REQUESTER        1
  91. #define TEST1_GADGET_LANGUAGE        2
  92.  
  93. #define TEST1_GADGET1_TYPE        GADGET_DATA_TYPE_BUTTON
  94. #define TEST1_GADGET1_FLAGS        GADGET_DATA_FLAG_HOTKEY
  95. #define TEST1_GADGET1_LEFT_EDGE        ((WINDOW_WIDTH / 2 - TEST1_GADGET1_WIDTH) / 2)
  96. #define TEST1_GADGET1_TOP_EDGE        ((WINDOW_HEIGHT - TEST1_GADGET1_HEIGHT) / 2)
  97. #define TEST1_GADGET1_WIDTH        ((12 + 2) * 10)
  98. #define TEST1_GADGET1_HEIGHT        19
  99. #define TEST1_GADGET1_TEXT        LANGUAGE_TEXT_AUTO_REQUEST
  100. #define TEST1_GADGET1_TEXT_ATTR        &topaz60_attr
  101.  
  102. #define TEST1_GADGET2_TYPE        GADGET_DATA_TYPE_BUTTON
  103. #define TEST1_GADGET2_FLAGS        GADGET_DATA_FLAG_HOTKEY
  104. #define TEST1_GADGET2_LEFT_EDGE        (WINDOW_WIDTH - (TEST1_GADGET2_WIDTH + TEST1_GADGET1_LEFT_EDGE))
  105. #define TEST1_GADGET2_TOP_EDGE        TEST1_GADGET1_TOP_EDGE
  106. #define TEST1_GADGET2_WIDTH        TEST1_GADGET1_WIDTH
  107. #define TEST1_GADGET2_HEIGHT        TEST1_GADGET1_HEIGHT
  108. #define TEST1_GADGET2_TEXT        LANGUAGE_TEXT_REQUESTER
  109. #define TEST1_GADGET2_TEXT_ATTR        TEST1_GADGET1_TEXT_ATTR
  110.  
  111. #define TEST1_GADGET3_TYPE        GADGET_DATA_TYPE_MX
  112. #define TEST1_GADGET3_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
  113. #define TEST1_GADGET3_LEFT_EDGE        ((WINDOW_WIDTH - TEST1_GADGET3_WIDTH) / 2)
  114. #define TEST1_GADGET3_TOP_EDGE        ((WINDOW_HEIGHT - TEST1_GADGET3_HEIGHT) / 2)
  115. #define TEST1_GADGET3_WIDTH        120
  116. #define TEST1_GADGET3_HEIGHT        30
  117. #define TEST1_GADGET3_TEXT        LANGUAGE_TEXT_LANGUAGE
  118. #define TEST1_GADGET3_TEXT_ATTR        &topaz60_attr
  119. #define TEST1_GADGET3_SPACING        2
  120. #define TEST1_GADGET3_ACTIVE        0
  121. #define TEST1_GADGET3_TEXT_ARRAY    &language_array[0]
  122.  
  123. STATIC BYTE *language_array[] = {
  124.     LANGUAGE_TEXT_ENGLISH,
  125.     LANGUAGE_TEXT_GERMAN,
  126.     NULL
  127. };
  128. STATIC struct GadgetData  test1_gadget_data[] = {
  129.    {
  130.     TEST1_GADGET1_TYPE,        /* gd_Type */
  131.     TEST1_GADGET1_FLAGS,        /* gd_Flags */
  132.     TEST1_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  133.     TEST1_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  134.     TEST1_GADGET1_WIDTH,        /* gd_Width */
  135.     TEST1_GADGET1_HEIGHT,        /* gd_Height */
  136.     TEST1_GADGET1_TEXT,        /* *gd_Text */
  137.     TEST1_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  138.     { 0, 0, 0 }
  139.    }, {
  140.     TEST1_GADGET2_TYPE,        /* gd_Type */
  141.     TEST1_GADGET2_FLAGS,        /* gd_Flags */
  142.     TEST1_GADGET2_LEFT_EDGE,    /* gd_LeftEdge */
  143.     TEST1_GADGET2_TOP_EDGE,        /* gd_TopEdge */
  144.     TEST1_GADGET2_WIDTH,        /* gd_Width */
  145.     TEST1_GADGET2_HEIGHT,        /* gd_Height */
  146.     TEST1_GADGET2_TEXT,        /* *gd_Text */
  147.     TEST1_GADGET2_TEXT_ATTR,    /* *gd_TextAttr */
  148.     { 0, 0, 0 }
  149.    }, {
  150.     TEST1_GADGET3_TYPE,        /* gd_Type */
  151.     TEST1_GADGET3_FLAGS,        /* gd_Flags */
  152.     TEST1_GADGET3_LEFT_EDGE,    /* gd_LeftEdge */
  153.     TEST1_GADGET3_TOP_EDGE,        /* gd_TopEdge */
  154.     TEST1_GADGET3_WIDTH,        /* gd_Width */
  155.     TEST1_GADGET3_HEIGHT,        /* gd_Height */
  156.     TEST1_GADGET3_TEXT,        /* *gd_Text */
  157.     TEST1_GADGET3_TEXT_ATTR,    /* *gd_TextAttr */
  158.     {
  159.     TEST1_GADGET3_SPACING,        /* gd_MXSpacing */
  160.     TEST1_GADGET3_ACTIVE,        /* gd_MXActiveEntry */
  161.     TEST1_GADGET3_TEXT_ARRAY    /* gd_MXTextArray */
  162.     }
  163.    }, {
  164.     INTUISUP_DATA_END        /* mark end of border data array */
  165.    }
  166. };
  167.     /* Defines for auto request */
  168.  
  169. #define TEST1_AUTO_REQ_TITLE        LANGUAGE_TEXT_AUTO_REQ_TITLE
  170. #define TEST1_AUTO_REQ_BODY_TEXT    LANGUAGE_TEXT_AUTO_REQ_BODY
  171. #define TEST1_AUTO_REQ_POS_TEXT        LANGUAGE_TEXT_AUTO_REQ_POS
  172. #define TEST1_AUTO_REQ_NEG_TEXT        LANGUAGE_TEXT_AUTO_REQ_NEG
  173. #define TEST1_AUTO_REQ_FLAGS        (AUTO_REQ_FLAG_BACK_FILL | AUTO_REQ_FLAG_TEXT_CENTER | AUTO_REQ_FLAG_TEXT_COLOR2 | AUTO_REQ_FLAG_HOTKEY | AUTO_REQ_FLAG_MOVE_POINTER_NEG | AUTO_REQ_FLAG_DRAW_RASTER)
  174.  
  175.     /* Defines for requester */
  176.  
  177. #define TEST2_REQ_WIDTH        200
  178. #define TEST2_REQ_HEIGHT    100
  179. #define TEST2_REQ_FLAGS        (REQ_DATA_FLAG_BACK_FILL | REQ_DATA_FLAG_CENTER | REQ_DATA_FLAG_INNER_WINDOW)
  180. #define TEST2_REQ_TITLE        LANGUAGE_TEXT_REQ_TITLE
  181.  
  182. #define TEST2_TEXT1_TYPE    TEXT_DATA_TYPE_TEXT
  183. #define TEST2_TEXT1_FLAGS    (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_BOLD)
  184. #define TEST2_TEXT1_LEFT_EDGE    0
  185. #define TEST2_TEXT1_TOP_EDGE    20
  186. #define TEST2_TEXT1_TEXT    LANGUAGE_TEXT_REQ_LINE1
  187. #define TEST2_TEXT1_TEXT_ATTR    &topaz60_attr
  188.  
  189. #define TEST2_TEXT2_TYPE    TEXT_DATA_TYPE_TEXT
  190. #define TEST2_TEXT2_FLAGS    (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_ITALIC | TEXT_DATA_FLAG_COLOR2)
  191. #define TEST2_TEXT2_LEFT_EDGE    0
  192. #define TEST2_TEXT2_TOP_EDGE    (TEST2_TEXT1_TOP_EDGE + 10)
  193. #define TEST2_TEXT2_TEXT    LANGUAGE_TEXT_REQ_LINE2
  194. #define TEST2_TEXT2_TEXT_ATTR    &topaz80_attr
  195.  
  196. #define TEST2_TEXT3_TYPE    TEXT_DATA_TYPE_TEXT
  197. #define TEST2_TEXT3_FLAGS    (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_UNDERLINED)
  198. #define TEST2_TEXT3_LEFT_EDGE    0
  199. #define TEST2_TEXT3_TOP_EDGE    (TEST2_TEXT2_TOP_EDGE + 10)
  200. #define TEST2_TEXT3_TEXT    LANGUAGE_TEXT_REQ_LINE3
  201. #define TEST2_TEXT3_TEXT_ATTR    &topaz80_attr
  202.  
  203. #define TEST2_BORDER1_TYPE        BORDER_DATA_TYPE_BOX2_OUT
  204. #define TEST2_BORDER1_LEFT_EDGE        20
  205. #define TEST2_BORDER1_TOP_EDGE        10
  206. #define TEST2_BORDER1_WIDTH        (TEST2_REQ_WIDTH - 2 * TEST2_BORDER1_LEFT_EDGE)
  207. #define TEST2_BORDER1_HEIGHT        (TEST2_REQ_HEIGHT - (3 * TEST2_BORDER1_TOP_EDGE + TEST2_GADGET1_HEIGHT))
  208.  
  209. #define TEST2_GADGET_CONTINUE        0
  210.  
  211. #define TEST2_GADGET1_TYPE        GADGET_DATA_TYPE_BUTTON
  212. #define TEST2_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_MOVE_POINTER)
  213. #define TEST2_GADGET1_LEFT_EDGE        ((TEST2_REQ_WIDTH - TEST2_GADGET1_WIDTH) / 2)
  214. #define TEST2_GADGET1_TOP_EDGE        (TEST2_REQ_HEIGHT - (TEST2_GADGET1_HEIGHT + 10))
  215. #define TEST2_GADGET1_WIDTH        ((8 + 2) * 10)
  216. #define TEST2_GADGET1_HEIGHT        19
  217. #define TEST2_GADGET1_TEXT        LANGUAGE_TEXT_REQ_GAD_CONTINUE
  218. #define TEST2_GADGET1_TEXT_ATTR        &topaz60_attr
  219.  
  220.     /* Statics for test borders */
  221.  
  222. STATIC struct TextData  test2_text_data[] = {
  223.    {
  224.     TEST2_TEXT1_TYPE,    /* td_Type */
  225.     TEST2_TEXT1_FLAGS,    /* td_Flags */
  226.     TEST2_TEXT1_LEFT_EDGE,    /* td_LeftEdge */
  227.     TEST2_TEXT1_TOP_EDGE,    /* td_TopEdge */
  228.     TEST2_TEXT1_TEXT,    /* *td_Text */
  229.     TEST2_TEXT1_TEXT_ATTR    /* *td_TextAttr */
  230.    }, {
  231.     TEST2_TEXT2_TYPE,    /* td_Type */
  232.     TEST2_TEXT2_FLAGS,    /* td_Flags */
  233.     TEST2_TEXT2_LEFT_EDGE,    /* td_LeftEdge */
  234.     TEST2_TEXT2_TOP_EDGE,    /* td_TopEdge */
  235.     TEST2_TEXT2_TEXT,    /* *td_Text */
  236.     TEST2_TEXT2_TEXT_ATTR    /* *td_TextAttr */
  237.    }, {
  238.     TEST2_TEXT3_TYPE,    /* td_Type */
  239.     TEST2_TEXT3_FLAGS,    /* td_Flags */
  240.     TEST2_TEXT3_LEFT_EDGE,    /* td_LeftEdge */
  241.     TEST2_TEXT3_TOP_EDGE,    /* td_TopEdge */
  242.     TEST2_TEXT3_TEXT,    /* *td_Text */
  243.     TEST2_TEXT3_TEXT_ATTR    /* *td_TextAttr */
  244.    }, {
  245.     INTUISUP_DATA_END    /* mark end of border data array */
  246.    }
  247. };
  248. STATIC struct BorderData  test2_border_data[] = {
  249.    {
  250.     TEST2_BORDER1_TYPE,        /* bd_Type */
  251.     TEST2_BORDER1_LEFT_EDGE,    /* bd_LeftEdge */
  252.     TEST2_BORDER1_TOP_EDGE,        /* bd_TopEdge */
  253.     TEST2_BORDER1_WIDTH,        /* bd_Width */
  254.     TEST2_BORDER1_HEIGHT        /* bd_Height */
  255.    }, {
  256.     INTUISUP_DATA_END        /* mark end of border data array */
  257.    }
  258. };
  259. STATIC struct GadgetData  test2_gadget_data[] = {
  260.    {
  261.     TEST2_GADGET1_TYPE,        /* gd_Type */
  262.     TEST2_GADGET1_FLAGS,        /* gd_Flags */
  263.     TEST2_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  264.     TEST2_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  265.     TEST2_GADGET1_WIDTH,        /* gd_Width */
  266.     TEST2_GADGET1_HEIGHT,        /* gd_Height */
  267.     TEST2_GADGET1_TEXT,        /* *gd_Text */
  268.     TEST2_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  269.     { 0, 0, 0 }
  270.    }, {
  271.     INTUISUP_DATA_END        /* mark end of border data array */
  272.    }
  273. };
  274. STATIC struct RequesterData  test2_requester_data = {
  275.     0,            /* rd_LeftEdge */
  276.     0,            /* rd_TopEdge */
  277.     TEST2_REQ_WIDTH,    /* rd_Width */
  278.     TEST2_REQ_HEIGHT,    /* rd_Height */
  279.     TEST2_REQ_FLAGS,    /* rd_Flags */
  280.     TEST2_REQ_TITLE,    /* *rd_Title */
  281.     &test2_text_data[0],    /* *rd_Texts */
  282.     &test2_border_data[0],    /* *rd_Borders */
  283.     &test2_gadget_data[0]    /* *rd_Gadgets */
  284. };
  285. STATIC BYTE *english_language_text_array[] = {
  286.     (BYTE *)LANGUAGE_TEXT_ENTRIES,
  287.  
  288.     /* Texts for main display */
  289.     "_Auto Request",
  290.     "_Requester",
  291.     "_Language",
  292.     "English",
  293.     "Deutsch",
  294.  
  295.     /* Texts for auto request */
  296.     " Auto Request ",
  297.     "Test line 1\\n\\nTest line 2\\nTest line 3\\n\\nTest line 4",
  298.     "_Positive",
  299.     "_Negative",
  300.  
  301.     /* Texts for requester */
  302.     " Requester ",
  303.     "Text Line 1",
  304.     "Text Line 2",
  305.     "Text Line 3",
  306.     "_Continue"
  307. };
  308.     /* Prototypes */
  309.  
  310. VOID test_action(struct RenderInfo  *ri, struct Window  *win);
  311.  
  312.     /* Pragmas */
  313.  
  314. #pragma regcall(test_action(a0,a1))
  315.  
  316.     /* Language test */
  317.  
  318.    LONG
  319. main(VOID)
  320. {
  321.    struct RenderInfo  *ri;
  322.    struct Window      *win;
  323.  
  324.    MWInit((BPTR)NULL, 0L);
  325.    if (IntuitionBase = OpenLibrary("intuition.library", 0L)) {
  326.       if (GfxBase = OpenLibrary("graphics.library", 0L)) {
  327.      if (DiskfontBase = OpenLibrary("diskfont.library", 0L)) {
  328.         if (LayersBase = OpenLibrary("layers.library", 0L)) {
  329.            if (ri = get_render_info(NULL, RENDER_INFO_FLAGS)) {
  330.           if (win = open_window(ri, &test_new_window,
  331.                                OPEN_WINDOW_FLAGS)) {
  332.              test_action(ri, win);
  333.              close_window(win, FALSE);
  334.           }
  335.           free_render_info(ri);
  336.            }
  337.            CloseLibrary(LayersBase);
  338.         }
  339.         CloseLibrary(DiskfontBase);
  340.      }
  341.      CloseLibrary(GfxBase);
  342.       }
  343.       CloseLibrary(IntuitionBase);
  344.    }
  345.    MWTerm();
  346.    return(0L);
  347. }
  348.     /* Perform IDCMP action */
  349.  
  350.    VOID
  351. test_action(struct RenderInfo  *ri, struct Window  *win)
  352. {
  353.    USHORT language = LANGUAGE_ENGLISH;
  354.    BOOL   keepon3 = TRUE;
  355.  
  356.    do {
  357.       struct GadgetList  *gl;
  358.       BYTE   **language_text_array;
  359.       USHORT new_language;
  360.  
  361.       /* Build language text array */
  362.       switch (language) {
  363.      case LANGUAGE_ENGLISH :
  364.         language_text_array = &english_language_text_array[0];
  365.         break;
  366.  
  367.      case LANGUAGE_GERMAN :
  368.         language_text_array = build_language_text_array(LANGUAGE_TEXT_FILE,
  369.                              LANGUAGE_TEXT_ENTRIES);
  370.         break;
  371.       }
  372.  
  373.       /* Create and display gadgets */
  374.       if (!language_text_array || !(gl = create_gadgets(ri,
  375.                &test1_gadget_data[0], 0, 0, language_text_array))) {
  376.      keepon3 = FALSE;
  377.       } else {
  378.      struct MsgPort  *up = win->UserPort;
  379.      BOOL keepon2 = TRUE;
  380.  
  381.      set_gadget_attributes(gl, TEST1_GADGET_LANGUAGE, 0L, 0L,
  382.          USE_CURRENT_VALUE, (ULONG)language, (VOID *)USE_CURRENT_VALUE);
  383.      clear_window(ri, win, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0);
  384.      display_gadgets(win, gl);
  385.      do {
  386.         struct IntuiMessage   *msg1, *msg2;
  387.         struct RequesterList  *rl;
  388.  
  389.         WaitPort(up);
  390.         while (msg2 = get_msg(up)) {
  391.            switch (msg2->Class) {
  392.           case CLOSEWINDOW :
  393.              keepon3 = FALSE;
  394.              break;
  395.  
  396.           case ISUP_ID :
  397.              switch (msg2->Code) {
  398.             case TEST1_GADGET_AUTO_REQUEST :
  399.                auto_request(win, TEST1_AUTO_REQ_TITLE,
  400.                            TEST1_AUTO_REQ_BODY_TEXT,
  401.                             TEST1_AUTO_REQ_POS_TEXT,
  402.                         TEST1_AUTO_REQ_NEG_TEXT, 0L, 0L,
  403.                  TEST1_AUTO_REQ_FLAGS, language_text_array);
  404.                break;
  405.  
  406.             case TEST1_GADGET_REQUESTER :
  407.                if (rl = display_requester(win,
  408.                               &test2_requester_data,
  409.                              language_text_array)) {
  410.                   BOOL keepon1 = TRUE;
  411.  
  412.                   do {
  413.                  WaitPort(up);
  414.                  while (msg1 = get_msg(up)) {
  415.                     if (msg1->Class == ISUP_ID) {
  416.                        keepon1 = FALSE;
  417.                     }
  418.                     reply_msg(msg1);
  419.                  }
  420.                   } while (keepon1 == TRUE);
  421.                   remove_requester(rl);
  422.                }
  423.                break;
  424.  
  425.             case TEST1_GADGET_LANGUAGE :
  426.                new_language = (USHORT)(LONG)msg2->IAddress;
  427.                keepon2      = FALSE;
  428.                break;
  429.              }
  430.              break;
  431.            }
  432.            reply_msg(msg2);
  433.         }
  434.      } while (keepon2 == TRUE && keepon3 == TRUE);
  435.      remove_gadgets(gl);
  436.      free_gadgets(gl);
  437.       }
  438.  
  439.       /* Free language text array */
  440.       if (language_text_array && language == LANGUAGE_GERMAN) {
  441.      free_language_text_array(language_text_array);
  442.       }
  443.       language = new_language;
  444.    } while (keepon3 == TRUE);
  445. }
  446.